<?php
/**
 * Created by PhpStorm.
 * User: chindor
 * Date: 2018/6/28
 * Time: 16:47
 */

    /**
     * 将当前路由上的控制器 或者 操作 与 参数 intended_url中的参数进行匹配，返回className值
     * 使用方法
     * 1.如果要只匹配控制器，则传入控制器名称(不含Controller尾缀)即可，
     * 2.如果要匹配控制器下的某个操作，则可以传递字符串 controllerName(不含Controller尾缀)/ActionName
     *   如果要匹配该控制器下的多个操作，则传递数组['home/index','home/edit']只要其中一个匹配到就会返回className
     * @param mixed $uri 控制器名称(不含controller)/action 也可以是数组 如果是数组 则其中一个匹配到就算匹配成功
     * @param string $className  两者匹配成功之后要返回的前端class名称 默认为active
     * @return string 返回className
     */
    function match($intented_uri = 'banner/index',$className = 'active')
    {
        $real_uri = request()->route()->uri;
        $real_uri_arr = explode('/',$real_uri);
        $flag = false;

        //增加对uri附加请求参数的情况的处理，（过滤掉请求参数)
        $real_uri_arr = array_filter($real_uri_arr,function($var){
            return $var[0]!=='{' && $var[strlen($var)-1] !=='}';
        });

        //如果是字符串并且其中没有/符号则说明要求匹配的是控制器
        if(is_string($intented_uri) && ($intented_uri = trim($intented_uri,'/'))){
            if(strpos($intented_uri,'/') === false && trim($intented_uri,',')){
                //将当前的uri中的控制器与传入的控制器进行匹配
                $intented_uri_arr = explode(',',$intented_uri);
                foreach($intented_uri_arr as $uri){
                    $flag = $real_uri_arr[count($real_uri_arr)-2] === $uri ? true : false;
                    if($flag) return $className;
                }
            }
            $intented_uri = [$intented_uri];
        }

        //以下匹配的控制器和操作
        if(!is_array($intented_uri)){
            return false;
        }

        foreach($intented_uri as $uri){
            //确保至少是两级以上
            $intented_uri_arr = explode('/',$uri);
            if(count($intented_uri_arr) < 2 || count($real_uri_arr) < 2){
                continue;
            }

            //匹配controller和action
            $flag = ($real_uri_arr[count($real_uri_arr)-2] === $intented_uri_arr[count($intented_uri_arr)-2]) && (end($real_uri_arr) === end($intented_uri_arr))?true : false;
            if($flag) return $className;
        }

        return '';
    }

    /**返回$db数组中存在，而$post中不存在的数组
     * @param $post
     * @param $db
     * @return array
     */
    function del_arr($post,$db)
    {
        if(empty($post)){
            return $db;
        }
        return array_diff($db,$post);
    }

    /**获取一个数组中的某个键 如果键不存在返回'' 否则返回该键对应的值
     * @param $data
     * @param $key
     * @return string
     */
    function filter_empty($data,$key)
    {
        return empty($data)?'':(empty($data[$key])?'':$data[$key]);
    }

    /**
     * @param int $status 订单状态
     * @return string
     */
    function order_staus($status)
    {
        $code = intval($status,0);
        if($code==0){
            return '未确认';
        }elseif ($code==1){
            return '已确认';
        }elseif ($code==2){
            return '已取消';
        }elseif ($code==3){
            return '无效';
        }else{
            return '退货';
        }
    }


    function rechargeCommissionDirection($direction)
    {
        switch ($direction)
        {
            case 0:return "合伙人佣金";
            case 1:return "分销佣金";
            default:return "数据错误";
        }
    }


    function rechargeStatus($status)
    {
        # 0 未支付 1 充值中 2 充值成功
        switch ($status)
        {
            case 0:return "未支付";
            case 1:return "充值中";
            case 2:return "充值成功";
            default:return "充值失败";
        }
    }


    function getSearchTime($search){
        $data = ['begin_time'=>'','end_time'=>''];
        if (isset($search['val'])){
            $val = $search['val'];
            if (is_string($val)){
                $val = json_decode($val,true);
                asort($val);
                $val = array_values($val);
                if (!empty($data)){
                    $data['begin_time'] = $val[0];
                    $data['end_time']   = $val[1];
                }
            }
        }
        return $data;
    }

    function getFieldValue($arr,$key)
    {
        if(empty($arr)){
            return '';
        }
        if(isset($arr[$key])){
            return $arr[$key];
        }
        return '';
    }

    function handle_search($query,$get,$filter_filed=array())
    {
        //全部为-1
        $sort = [];
        $like = [];
        $where = [];
        foreach ($get as $k => $v) {
            if (strpos($k, 'sort_') !== false) {
                $sort[substr($k,5)] = empty($v) ? 'asc' : 'desc';
            } else if (strpos($k, 'search_') !== false) {
                $like[] = empty($v) ? [] : [substr($k,7),'like','%'.$v.'%'];
            } else {
                $filter_filed = array_merge($filter_filed, ['r', 'per-page', 'page']);
                if (!in_array($k, $filter_filed)) {
                    if ($v != -1) {
                        if (strpos($v, '-') !== false) {
                            $where[$k] = explode('-', $v);
                        } else {
                            $where[$k] = $v;
                        }
                    }
                }
            }
        }

        foreach($like as $v){
            if(empty($v)){
                continue;
            }
            $query -> where($v[0],$v[1],$v[2]);
        }

        foreach($where as $k => $v){
            if(is_array($v)){
                foreach($v as $vv){
                    $query -> where($k,'=',$vv);
                }
            }else{
                $query -> where($k,'=',$v);
            }
        }

        foreach($sort as $k => $v){
            $query -> orderby($k,$v);
        }

        return $query;

    }


    function gethtmlattribute($value,$cvalue,$class='selected')
    {
        if($value == $cvalue){
            return $class;
        }
        return '';
    }
